The Internet is a decentralized network of computers that can communicate with one another via the TCP/IP (transmission control protocol/internet protocol) network protocol. Although the Internet has its origins in an agency started by the United States Department of Defense in the late 1960's called the U.S. Advanced Research Project Agency (ARPANET), it has only recently become a worldwide communication medium. To a large extent, the explosive growth in use and traffic over the Internet is due to the development in the early 1990's of the worldwide web (WWW), which is one of several service facilities provided on the Internet. Other facilities include a variety of communication services such as electronic mail, telnet, usenet newsgroups, internet relay chat (IRC), a variety of information search services such as WAIS and Archie, and a variety of information retrieval services such as FTP (file transfer protocol) and Gopher. While these facilities have serviced the research-oriented user well, the multimedia capability of the WWW has brought the Internet into prominence.
The WWW is a client-server based facility that includes a number of servers (e.g., computers connected to the Internet) on which web pages or files reside and clients (e.g., web browsers) which interface the users with the web pages. Specifically, web browsers and software applications such as WebExplorer.RTM. (IBM Corporation) or Navigator.RTM. (Netscape Communication Corporation) send a request over the WWW to a server requesting a web page identified by a universal resource locator (URL) which notes both the server where the web page resides and the file or files on that server which comprise the web page. The server then sends a copy of the requested file(s) to the web browser which displays the web page to the user.
The web pages on the WWW may be hyper-media documents written in a standardized language called hypertext markup language (HTML). Thus, a typical web page includes text together with embedded formatting commands, referred to as tags, which can be used to control the font size, the font style (for example, whether italic or bold), how to weigh up the text, and so on. A web browser parses the HTML script in order to display the text in accordance with the specified format.
In addition, an HTML page can also contain a reference, in terms of another URL, to a piece of multimedia data, for example, an image, a video segment, or an audio file. The web browser responds to such a reference by retrieving and displaying or playing the data. Alternatively, such multimedia data may form its own web page, without any surrounding HTML text. Further information about HTML and the WWW can be found in World Wide Web and HTML by Douglas MacArthur, pp. 181-26 and Dr. Dobbs' Journal, December 1994, and in The HTML Sourcebook by Ian Graham, John Wiley Publishers, New York (1995).
As so far described, and broadly speaking as currently implemented, the WWW suffers from the disadvantage that pages downloaded from a server to a client are essentially passive, in other words, they generally do not contain code which is executed at the client machine. One implication of this is that the server cannot offload onto the client any of the processing associated with the interaction between the client and the server. Thus if the client is completing a form with their telephone number for example, then any formal checks such as to the number of digits in the telephone number are generally performed at the server. This may result in a heavier processing burden at the server and in time-consuming extra communications between the server and client should there be any mistakes to correct. Moreover, the inability of the server to download code for execution at the client is a significant limitation on the type of applications that can be created to exploit the WWW.
Recent developments, based particularly on the Java (.RTM. Sun Microsystems, Inc.) technology from Sun Microsystems Inc, have sought to overcome the above difficulties. The Java technology comprises primarily (i) a new programming language, somewhat similar to C and C++, and (ii) a virtual machine. Essentially, programs written in the Java programming language can be compiled into byte code form, and then interpreted at runtime on the Java virtual machine. The Java virtual machine converts the byte codes into instructions that can be executed by the underlying physical machine.
Programs written using Java can be downloaded over the WWW in the form of byte codes for execution on a Java virtual machine at the client. Such programs are known as "applets". The use of the Java technology for downloading code over the WWW has two major benefits. An applet can be platform independent, if we assume that each client has a copy of the Java virtual machine (the virtual machine at the client's system is typically incorporated either into the operating system, or into the Web browser itself). In other words, there is no need for a server to have different versions of the code for downloading to clients according to their respective operating systems and machines. Therefore, only a single version of the relevant code needs to be written and maintained, which may simplify software development. Because the applet executes on a virtual machine, rather than a physical machine, security is greatly improved. Thus, when downloading code over the network, there is always a risk that it will include some malicious code (accidentally or otherwise) that may damage data or programs stored at the client. The virtual machine however can monitor the operation of the applet, and so detect and prevent such malicious activity.
It will be noted that the concept of downloading software from a server to a client in the form of byte codes for execution on a virtual machine was also known independently of the Java technology. See for example U.S. Pat. No. 5,347,632.
In order to invoke a Java applet, a Web page of html text contains an &lt;APPLET&gt; tag, which identifies the URL containing the applet. A browser responds to this tag by retrieving and running the applet. Also defined is a &lt;PARAM&gt; tag, which is contained within a pair of corresponding &lt;APPLET&gt; and &lt;/APPLET&gt; tags, and which can be used to specify parameters that are passed to the applet at run-time. (Note that the APPLET and PARAM tags are not formally incorporated into the html standard, but are nevertheless recognised by many Web browsers). Further information about the Java technology and applets can be found in "Teach Yourself Java in 21 Days" by Laura Lemay and Charles Perkins (Sams.net Publishing, Indianapolis, Ind., USA, 1996).
Out of an effort to heighten the sensory experience of the WWW, virtual reality modeling language (VRML, pronounced "VER-MEL") was developed. VRML is a standardized language for describing animation and three dimensional modeling of geometric objects. VRML allows a three dimensional scene or world(s) to be manipulated in an interactive manner over the Internet or locally. In either case VRML allows for the creation of virtual environments which may be shared by multiple users. Thus, unlike HTML which provides for relaying and formatting text and images, and for hyperlinks to other web pages, VRML provides for the organization of three dimensional objects and scenes in a hierarchical fashion that may be truly interactive.
What each of these various forms of data on the Internet have in common is the use of multiple media types in their interaction with a user. For example, HTML, Java, or VRML all may utilize images, sound, text and even animations (a series of images successively played for a user) in providing information to a user. The media accessed typically takes the form of media files located locally on a user's computer, on a server connected to the user's computer or on a third party server accessed through the server connected to the user's computer.
Typically, the burden has been placed on the individual programmer to handle the different scenarios that result from the possible locations of media files. This burden has typically been discharged by the programmer writing different code to handle the various possibilities. This code differs for each of the possible scenarios and may also differ depending upon the format of the media file to be accessed.
One traditional manner in which Java applets have dealt with multiple media files is for the programmer to surface the different locations to the end user. The end user then becomes responsible for understanding the complexities of media files being located at one or more of the possible locations. However, such a solution adds complexities to the end user without relieving the programmer of the burden of handling the different file locations.
With respect to accessing particular media types, a particular problem arises with respect to the access of animations. Animations are typically composed of a sequence of image files that are presented in a "flip book" format in order to simulate motion. The tools conventionally used to create animations may force the end user to explicitly specify each of the individual images (or animation cells) of the animation to be created. Alternatively, these tools may force the user to implement one numbering scheme for their image files. Conventional tools also typically limit the number of images that can be specified for use in an animation by a predefined upper bound. In either case, the programmer has surfaced to the end user the rigidity with which they have provided support for grouping and loading image files used in creating animations.
As an example of the conventional management of images, in AimTech's Jamba.RTM. an animation is given a first image file name and only nine additional associated image files specified by the numbering scheme that is incorporated in the file name may be incorporated in the animation. Furthermore, conventional tools may only create animations from image files located locally on the user's computer system.
A third concern with respect to media management is support for versions of an application where the only change in the versions is the media content accessed by the application. Conventionally, such versions have been supported by the programmer changing references in the code to match each of the changes in the media content. As is apparent, such a labor intense manner of revision may quickly become costly as the number of different versions supported increases.
In light of the above discussion, a need exists for improvement in the accessing of multiple media types over networks such as the Internet. These improvements are needed in accessing multiple media types, creating animations and supporting various versions of applications.